perm filename FDERIV.MCL[TIM,LSP] blob sn#619505 filedate 1981-10-17 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	(defun der1 (a) `(quotient ,(deriv a) ,a))
C00004 ENDMK
CāŠ—;
(defun der1 (a) `(quotient ,(deriv a) ,a))

 (defun deriv (a)
	(cond 
		((atom a)
		 (cond ((eq a 'x) 1) 
		       (t 0)))
		((eq (car a) 'plus)
		 `(plus . ,(mapcar 'deriv (cdr a))))
		((eq (car a) 'difference) 
		 `(difference . ,(mapcar 'deriv 
					 (cdr a))))
		((eq (car a) 'times)	
		 `(times 
		   ,a 
		   (plus . ,(mapcar 'der1 a))))
		((eq (car a) 'quotient)
		 `(difference 
		   (quotient 
		    ,(deriv (cadr a)) 
		    (caddr a))
		   (quotient 
		    ,(cadr a) 
		    (times
		     ,(caddr a)
		     ,(caddr a)
		     ,(deriv (caddr a))))))
		(t 'error)))

(defun run ()
	(prog (i formula)
	      (setq i 0)
	      (setq formula '(plus (times 3 x x) (times a x x) (times b x) 5))
	q     (deriv '(plus (times 3 x x) (times a x x) (times b x) 5))
	      (cond ((lessp (setq i (add1 i)) 500.) (go q)))))

(defun timit ()
 ((lambda (t1 x gt)
	(run)
	  (setq t1 (- (runtime) t1))
	  (setq gt (- (status gctime) gt))
	  (print (list 'runtime
		       (quotient (float  (- t1 gt))
				 1000000.)))
	  (print (list 'gctime
		       (quotient (float gt) 1000000.))))
  (runtime) ()(status gctime)))